package com.epic.eventmgr.rest;

import com.epic.eventmgr.inter.IEvent;
import org.apache.dubbo.config.annotation.DubboReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@Path("/v1/event")
@Component("EventResource")
public class EventResource {
    private static Logger logger =  LoggerFactory.getLogger(EventResource.class);

    @DubboReference(check = false)
    public IEvent iEvent;

    @GET
    @Path("test")
    @Produces("application/json;charset=UTF-8")
    public String test(){
        String ret = "test";
        return  ret;
    }
//    @Consumes(MediaType.APP)

    @GET
    @Path("test2")
    @Produces("application/json;charset=UTF-8")
    @Consumes(MediaType.APPLICATION_JSON+";charset=UTF-8")
    public ArrayList<String> test2(){
        ArrayList<String> ret = new ArrayList<>();
        ret.add("11");
        ret.add("22");
        return  ret;
    }
    @GET
    @Path("test3")
    @Produces(MediaType.APPLICATION_JSON+";charset=UTF-8")
    @Consumes(MediaType.APPLICATION_JSON+";charset=UTF-8")
    public HashMap<String,Object> test3(){
        HashMap<String,Object> ret = new HashMap<>();
        ret.put("name","test");
        ret.put("key","ok");
        ret.put("age",20);
        ret.put("float",30.3);
        return  ret;
    }

    @GET
    @Path("test4")
    @Produces("application/json;charset=UTF-8")
    public String test4(@Context HttpServletRequest request,
                @QueryParam("args") String args){
        String ret = "";
        try{
            ret = iEvent.testEvent(args);
        }catch (Exception e){
            logger.error(e.getMessage());
        }
        return  ret;
    }
    /**
     * tomcat + jersey url:curl http://localhost:8080/rest-1.0-SNAPSHOT/api/v1/test3
     * {"name":"test","float":30.3,"key":"ok","age":20}
     * 看如何把多余的url去掉，例如rest-1.0-SNAPSHOT
     * 通过重命名war文件mv rest-1.0-SNAPSHOT.war ROOT.war
     * 然后启动tomcat
     * url:http//localhost:8080/api/v1/test3 就通了
     * curl http://localhost:8080/api/v1/test3
     * {"name":"test","float":30.3,"key":"ok","age":20}
     *
     * 我们大家都知道，Tomcat在启动的时候会去webapps下访问它默认的ROOT应用程序，其实这就是它在conf/server.xml中配好的默认规则，
     * 如果你想让Tomcat启动时默认打开你自己的web应用，最简单的做法就是不去改他的配置，只需要
     * 1.将webapps目录下ROOT文件夹删除掉
     * 2.copy你的war包到webapps目录下，并更名为ROOT
     * 3.启动Tomcat
     * 4.访问 http://localhost:8080/ 就是你的项目首页了
     *
     * 默认的情况下,tomcat会认为ROOT是一个主机的根应用,在tomcat的webapps(当然也是默认情况下的目录),一般会有ROOT,examples,samples,manager等,
     * 而这个ROOT很特别,您访问它下面的index.jsp的时候,只需要http://localhost:8080/index.jsp,就OK了,而examples下的index.jsp,
     * 您却要这样访问http://localhost:8080/examples/index.jsp,ROOT下的东西,在访问的时候,是不需要加上这个目录名称(也叫应用名)的
     */
}
